package day0228;

import java.io.IOException;

public class ExceptionDemo {


    public static void main(String[] args) throws IOException {
        /*
            异常:  Throwable 体系
             Error： 程序处理起来比较麻烦的错误
             Exception: 可以通过程序来避免的
                检查时(编译时/设计时)异常: 程序还没运行在编译阶段就呈现的
                    在编码时必须处理
                运行时异常: 程序运行过程中差生的异常。 RuntimeException 及子类

            处理异常：
                try-catch
                throws 自己不处理，往上抛异常。
         */

//        Throwable

//        System.out.println(mul(5, 0));

        System.out.println(retrunMethod());
    }


    public static int mul(int num, int num1) {
        try {
            int a = 1;
            a = num / num1;
            // 可能出现异常代码放到 try 块中
            return a;
        } catch (NullPointerException e) {
            System.out.println("发生异常了");
        } catch (ArithmeticException e) {
//            e.printStackTrace();
            System.out.println("发生异常了2" + e.getMessage());
        } catch (Exception e) {
            System.out.println("发生异常了3");
        } finally {
            System.out.println("finally");
        }
        return -1;
    }

    // 声明此方法可能会抛异常
    public static int retrunMethod() throws IOException {
        try{
            int a = 1 / 0;
            return 1;
        } catch (Exception e) {
            // 抛出去
            throw new IOException("模拟的IO异常");
        }
    }
}
